Routers or other types of switches are used to route data packets over one or more links between a data source in a network, such as a customer's computer connected to the data network and a destination. Routing protocols such as Border Gateway Protocols (“BGP”), Routing Information Protocol (“RIP”), and Open Shortest Path First Protocol (“OSPF”) enable each machine to understand which other machine is the “next hop” that a packet should take towards its destination. Routers use the routing protocols to construct routing tables. Thereafter, when a router receives a data packet and has to make a forwarding decision, the router “looks up” in the routing table for the next hop. Conventionally, the routers look up the routing table using the destination IP address provided in the data packet as an index.
In the basic OSPF algorithm, a router broadcasts a Hello packet including the router's own ID, neighboring routers' IDs the router knows, and other information that is needed for agreeing upon timer values, and the like. The router also receives such hello messages from other neighboring routers. If a router receives a Hello packet, which includes its own ID, from another router that the router has been aware of, on the understanding that the two routers have become aware of each other, the two routers exchange network link-state information by sending routing protocol packets. The router creates a routing table based on the network link-state information collected by running a routing algorithm, typically the Dijkstra algorithm. With OSPF the routing table determines the next hop on a least cost path to a destination route. The least cost path can be determined by potentially considering many factors including link metrics and available network link bandwidth. When a network link changes, each router calculates the shortest path for itself to each of the destinations, and sets its own routing table according to the least cost paths. A route calculation unit is used for creating a routing table.
The OSPF instance on each router, while it transmits or receives control packets and network link-state information, keeps track of the states of other neighboring routers on the network to which this router is connected, and also keeps track of the states of the interfaces through which this router is connected to networks. With regard to the states of neighboring routers, the router keeps track of the state of routing information exchange, such as whether each of those routers has completed the transmission and reception of network link-state information. With regard to interface state, each router keeps track of the identity of neighboring routers that have been discovered through hello messaging with routers that are connected through this interface, as well as whether the neighboring routers are aware of the existence of this router.
When conventional IP routers lose their primary controller circuitry and operation falls back to a redundant controller, the relationships established with the neighboring routers need to be reset. From the perspective of the other nodes in the network, it appears as if the neighboring router in the area has gone down, and subsequently comes back up again. Specifically, an outage ensues while the router releases the routing states and packet forwarding tables. During this outage, the neighboring nodes may be unable to forward packets to their destinations.
Furthermore, system operators may be required to perform some maintenance or updates to an active controller. If the active controller is taken off-line (e.g., powered down), a similar outage ensues during the switchover to the redundant controller. Accordingly, there is a need in the art to provide a transparent switchover (failover) between redundant controllers during a controller failure or scheduled maintenance condition.